#!/bin/bash

# 获取所有提交者（只获取名字）
authors=$(git log --format='%aN' | sort -u)

echo "统计结果："
echo "---"

for author in $authors; do
    # 获取提交次数
    commits=$(git log --author="$author" --oneline | wc -l | tr -d ' ')
    
    # 获取增加和删除的行数
    stats=$(git log --author="$author" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "%s,%s,%s", add, subs, loc }')
    
    # 获取首次提交时间
    first_commit=$(git log --author="$author" --reverse --format="%ai" | head -n 1)
    
    # 获取最近提交时间
    last_commit=$(git log --author="$author" --format="%ai" | head -n 1)
    
    # 获取提交频率（平均每天提交次数）
    days=$(git log --author="$author" --format="%ai" | cut -d' ' -f1 | sort -u | wc -l)
    if [ $days -eq 0 ]; then
        days=1
    fi
    commit_frequency=$(echo "scale=2; $commits/$days" | bc)
    
    # 获取修改文件数
    files_changed=$(git log --author="$author" --name-only --pretty=format: | sort -u | grep -v '^$' | wc -l)
    
    # 获取提交信息长度（平均每个提交的信息长度）
    avg_msg_length=$(git log --author="$author" --pretty=format:"%s" | awk '{ total += length($0) } END { if (NR > 0) print total/NR; else print 0 }')
    
    echo "## 作者: $author"
    echo "### 总行数: $(echo $stats | cut -d',' -f3)"
    echo "### 提交次数: $commits"
    echo "### 增加行数: $(echo $stats | cut -d',' -f1)"
    echo "### 删除行数: $(echo $stats | cut -d',' -f2)"
    echo "### 首次提交: $first_commit"
    echo "### 最近提交: $last_commit"
    echo "### 活跃天数: $days 天"
    echo "### 平均每天提交: $commit_frequency 次"
    echo "### 修改文件数: $files_changed"
    echo "### 平均提交信息长度: $(printf "%.0f" $avg_msg_length) 字符"
    echo "---"
done 